package view;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import util.DateUtil;
import util.Util;
import model.RelatorioVigencia;
import model.TabelaTaxasComissoesEmprestimo;
import model.TaxaComissaoEmprestimo;
import model.VigenciaTaxasComissoesEmprestimo;

@ManagedBean(name = "dataTableTest")
@ViewScoped
public class DatatableTest {
	
	private RelatorioVigencia relatorioVigencia;
	
	@PostConstruct
	public void init() {
		relatorioVigencia = new RelatorioVigencia();
		relatorioVigencia.setTabelasTaxasComissoesEmprestimos(this.createRandomTabelas(3));

	}
	
	private List<TaxaComissaoEmprestimo> createRandomFaixas(int numeroFaixas) {
		
		List<TaxaComissaoEmprestimo> comissoes = new ArrayList<TaxaComissaoEmprestimo>(numeroFaixas);
		
		for (int i = 0; i < numeroFaixas; i++) {
			comissoes.add(new TaxaComissaoEmprestimo(Util.getRandomId(), 
					Util.getRandomShort(), Util.getRandomShort(), 
					Util.getRandomFloat(), Util.getRandomFloat(), 
					Util.getRandomFloat(), Util.getRandomFloat()));
		}
		
		return comissoes;
	}
	
	private List<VigenciaTaxasComissoesEmprestimo> createRandomVigencia(int numeroVigencias) {
		
		List<VigenciaTaxasComissoesEmprestimo> vigencias = new ArrayList<VigenciaTaxasComissoesEmprestimo>(numeroVigencias);
		
		for (int i = 0; i < numeroVigencias; i++) {
			vigencias.add(new VigenciaTaxasComissoesEmprestimo(Util.getRandomId(), 
					new Date(), DateUtil.incrementarData(new Date(), 5), 
					this.createRandomFaixas(new Random().nextInt(5) + 1)));
		}
		
		return vigencias;
	}
	
	private List<TabelaTaxasComissoesEmprestimo> createRandomTabelas(int numeroTabelas) {
		
		List<TabelaTaxasComissoesEmprestimo> tabelas = new ArrayList<TabelaTaxasComissoesEmprestimo>(numeroTabelas);
		
		for (int i = 0; i < numeroTabelas; i++) {
			tabelas.add(new TabelaTaxasComissoesEmprestimo(Util.getRandomId(), 
														   Util.getRandomTabelasTaxasNome(), 
														   Util.getRandomBoolean(), 
														   Util.getRandomBoolean(), 
														   Util.getRandomBoolean(), 
														   Util.getRandomBoolean(), 
														   Util.getRandomAnos(), 
														   Util.getRandomAnos(), 
														   Util.getRandomFloat(), 
														   Util.getRandomFloat(), 
														   this.createRandomVigencia(new Random().nextInt(3) + 1), 
														   null, 
														   null));
		}
		
		return tabelas;

	}

	public RelatorioVigencia getRelatorioVigencia() {
		return relatorioVigencia;
	}

	public void setRelatorioVigencia(RelatorioVigencia relatorioVigencia) {
		this.relatorioVigencia = relatorioVigencia;
	}
	
}
